/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao;

import lib.*;
import model.dao.vo.*;

import java.sql.*;
import java.util.*;

/**
 *
 * @author felipe
 */
public class PessoaDAO extends DAO{

    public PessoaDAO()
    {
        super();
    }

    public PessoaVO buscaPessoa(PessoaVO pessoa)
    {
        SQL sql = new SQL();
        sql = sql.select("pessoa_id, pessoa_nome")
                .from("pessoa")
                .where("pessoa_id = " + pessoa.getId());
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                pessoa.setId(rs.getInt("pessoa_id"));
                pessoa.setNome(rs.getString("pessoa_nome"));
                return pessoa;
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error buscaPessoa method " , e);
        }
        return null;
    }

    public boolean inserePessoa(PessoaVO pessoa)
    {
        SQL sql = new SQL();
        sql = sql.insert()
                .into("pessoa", "pessoa_id, pessoa_nome")
                .value("NULL, '"+pessoa.nome+"'");
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1){
            return true;
        }
        return false;
    }

    public Iterator<PessoaVO> listaPessoa(PessoaVO pessoa)
    {
        SQL sql = new SQL();
        sql = sql.select("pessoa_id, pessoa_nome")
                .from("pessoa")
                .where("pessoa_nome LIKE '%" + pessoa.getNome() + "%'");
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                List<PessoaVO> pessoas = new ArrayList<PessoaVO>();
                while(rs.next())
                {
                    PessoaVO p = new PessoaVO();
                    p.setId(rs.getInt("pessoa_id"));
                    p.setNome(rs.getString("pessoa_nome"));
                    pessoas.add(p);
                }

                if ( ! pessoas.isEmpty()){
                    return (Iterator<PessoaVO>) pessoas.iterator();
                }
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error listaPessoa method " , e);
        }
        return null;
    }

    public boolean alteraPessoa(PessoaVO pessoa)
    {
        SQL sql = new SQL();
        sql = sql.update("pessoa")
                .set("pessoa_nome = '" + pessoa.nome + "'")
                .where("pessoa_id = " + pessoa.id);
        int sucess = this.db.Update(sql.toString());
        if (sucess > 0 ){
            return true;
        }
        return false;
    }

    public boolean apagaPessoa(PessoaVO pessoa)
    {
        SQL sql = new SQL();
        sql = sql.delete("pessoa")
                .where("pessoa_id = " + pessoa.getId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1){
            return true;
        }
        return false;
    }

}
